package com.example.mq.server.messagemanager;

import java.io.Serializable;

public class BasicProperties implements Serializable {
    protected String messageId; // 消息的唯一身份标识; 此处为了保证 id 的唯一性, 使用 UUID 来作为 message id

    // 是一个消息上带有的内容, 和 bindingKey 做匹配.
    // 如果当前的交换机类型是 DIRECT, 此时 routingKey 就表示要转发的队列名.
    // 如果当前的交换机类型是 FANOUT, 此时 routingKey 无意义(不使用).
    // 如果当前的交换机类型是 TOPIC, 此时 routingKey 就要和 bindingKey 做匹配. 符合要求的才能转发给对应队列.
    protected String routingKey;

    // 记录消息在文件中的位置
    protected transient long offsetBeg = 0;  // 消息数据的开头距离文件开头的位置偏移(字节)
    protected transient long offsetEnd = 0;  // 消息数据的结尾距离文件开头的位置偏移(字节)

    // 实现在硬盘文件中 逻辑删除
    // 0x1 表示有效，0x0 表示无效
    private byte isValid = 0x1;


    public String getMessageId() {
        return messageId;
    }

    public void setMessageId(String messageId) {
        this.messageId = messageId;
    }

    public String getRoutingKey() {
        return routingKey;
    }

    public void setRoutingKey(String routingKey) {
        this.routingKey = routingKey;
    }

    public long getOffsetBeg() {
        return offsetBeg;
    }

    public void setOffsetBeg(long offsetBeg) {
        this.offsetBeg = offsetBeg;
    }

    public long getOffsetEnd() {
        return offsetEnd;
    }

    public void setOffsetEnd(long offsetEnd) {
        this.offsetEnd = offsetEnd;
    }

    public byte getIsValid() {
        return isValid;
    }

    public void setIsValid(byte isValid) {
        this.isValid = isValid;
    }
}
